package gest;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Scanner;
import java.util.StringTokenizer;

public class CriarMedicamento {

	
	static Scanner in = new Scanner (System.in);
	static Registry reg;
	static Gestao g = null;
	static Medicamento med;
	String ficheiro;
	
	public CriarMedicamento() {
		try {
			reg = LocateRegistry.getRegistry();
			g = (Gestao) reg.lookup("GestaoReceitas");
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
		g= new Gestao_Impl();
	}
	
	public CriarMedicamento(String n, String comp) throws IOException{
		if(comp.equals("-f")){
			try {
				reg = LocateRegistry.getRegistry();
				g = (Gestao) reg.lookup("GestaoReceitas");
			} catch (RemoteException e) {
				e.printStackTrace();
			} catch (NotBoundException e) {
				e.printStackTrace();
			}
			this.ficheiro = n;
			g = new Gestao_Impl();
			BufferedReader br = new BufferedReader (new FileReader (this.ficheiro));
			StringTokenizer st = null;
			String teste;
			while((teste = br.readLine()) != null){
				st = new StringTokenizer(teste, ";");
				String nome = st.nextToken();
				med = g.cria_medicamento(nome.toUpperCase());	
				imprimeinfo();
			}			
		}
		else if(comp.equals("-v")){
			try {
				reg = LocateRegistry.getRegistry();
				g = (Gestao) reg.lookup("GestaoReceitas");
			} catch (RemoteException e) {
				e.printStackTrace();
			} catch (NotBoundException e) {
				e.printStackTrace();
			}
			g = new Gestao_Impl();
			med = g.cria_medicamento(n.toUpperCase());				
		}else System.out.println("Invalido");
	}
	
	
	public static void main(String[] args) {
		if(args[0].equals("-v")){			
			try {
				new CriarMedicamento(args[1],args[0]);
				imprimeinfo();
				System.exit(0);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		else if (args[0].equals("-f")){
			try {
				new CriarMedicamento(args[1],args[0]);
				System.exit(0);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		else if(args[0].equals("-i")){
			CriarMedicamento ce = new CriarMedicamento();
			CriarMedicamento.criar();
			CriarMedicamento.resposta();
		}
		else System.out.println("Atributos Incorrectos");
	}
	
	public static void imprimeinfo(){
		try {
			System.out.println( med.get_idMedi()+" "+med.get_nome());
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}
	
	public static void criar(){
		try{
			System.out.println("Insira o nome do medicamento:");
			String nome = in.nextLine();
			med = g.cria_medicamento(nome.toUpperCase());
		}catch(RemoteException e) {
			System.out.println("Falha de Ligacao");
			e.printStackTrace();
		}
	}
	
	public static void info() {
		System.out.println("Deseja alguma informacao?");
		System.out.println("1 - ver dados");
		System.out.println("2 - sair");
	}
	
	public static void resposta(){
		info();
		int a=0;
		try{
			a = Integer.parseInt(in.nextLine());
			switch(a){
			case 1:
				imprimeinfo();
				resposta();
				break;			
			case 2:
				System.exit(0);
				break;
			default:
				resposta();
				break;
			}
			}catch(java.lang.NumberFormatException e){
				System.out.println("Opcao Invalida!");
				resposta();
			}
	}
		
}
